#include<stdio.h>
int a[10],book[10],n;
// C 語言的全域變數初始值為 0
void dfs(int step) //
{
int i;
if(step==n+1) //表示 n 個數字已經排列完畢了
{
for(i=1;i<=n;i++) // 輸出一種排列
printf("%d",a[i]);
printf("\n");
return; // 返回 最近呼叫 dfs 的地方
}
/* 此時在第 step 個數字 依照1、2、3...n 的順序嘗試 */
for(i=1;i<=n;i++)
{
/* 判斷數字 i 是否已排列 */
if(book[i]==0) // 等於 0 表示未排列
{
a[step]=i; // 將數字 i 排列到第 step 數字
book[i]=1; // 設為 1 表示 i 數字已排列
/* 第 step 個數字已排列 接下來要排列第 step+1 個數字 */
dfs(step+1); //使用遞迴呼呼叫
book[i]=0; // 將數字 i 回復到未排列
}
}
return;
}
int main()
{
scanf("%d",&n); //n 為1~9 之間的整數
dfs(1); //
return 0;
}